﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AccesoBD;
using LogicaNegocio;
using Entidades;
using System.Drawing;

namespace CMS
{
    public partial class ConsultarTurnos : System.Web.UI.Page
    {
        public long idLegajo { get; set; }
        public int idEspec { get; set; }
        public long nrohcPaciente { get; set; }
        public long idPersona { get; set; }
        public long idTurnoSeleccionado { get; set; }
        public int idEstadoTurno { get; set; }



        protected void Page_Load(object sender, EventArgs e)
        {
            btnRegistrar.Visible = false;
            lblError.Visible = false;
            lblExito.Visible = false;
            pnlRegistro.Visible = false;
            if (!Page.IsPostBack)
            {

                cargarComboEspecialidadesPorTurno();

            }

        }
        public void OnConfirm(object sender, EventArgs e)
        {
            string confirmValue = Request.Form["confirm_value"];
            if (confirmValue == "Yes")
            {
                this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
            }
            else
            {
                this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
            }
        }
        private void ObtenerMisDatos(long nroAfiliado)//Obtenemos los datos del paciente logueado
        {

            //Datos del paciente
            Paciente op = Pacientess.buscarPacientePorNroAfilaidoWEB(nroAfiliado);

            if (op != null)
            {
                Pacientess pacientes = new Pacientess();
                nrohcPaciente = op.nroHC;
                idPersona = op.idPersona;

            }

        }
        private void cargarComboEspecialidadesPorTurno()
        {
            if (cmbEspecialidad.Items.Count == 0)
            {
                List<Especialidad> listEspecialidades = GestorEspecialidades.obtenerEspecialidadesPorTurno();
                cmbEspecialidad.DataSource = listEspecialidades;
                cmbEspecialidad.DataValueField = "CodEspecialidad";
                cmbEspecialidad.DataTextField = "Nombre";
                cmbEspecialidad.DataBind();
                if (listEspecialidades != null)
                {
                    int codEs = int.Parse(cmbEspecialidad.SelectedValue);
                    cargarComboMedicosPorTurno(codEs);
                }

            }
        }

        private void cargarComboMedicosPorTurno(int codEsp)
        {
            GestorMedicos gm = new GestorMedicos();
            List<Medico> listaMedicosEsp = GestorEspecialidades.ObtenerMedicosDeEspecialidad(codEsp);
            cmbMedico.DataSource = listaMedicosEsp;
            cmbMedico.DataValueField = "Legajo";
            cmbMedico.DataTextField = "ApellidoNombre";

            cmbMedico.DataBind();

        }




        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        protected void cmbEspecialidad_SelectedIndexChanged1(object sender, EventArgs e)
        {
            idEspec = Convert.ToInt32(cmbEspecialidad.SelectedValue.ToString());
            cargarComboMedicosPorTurno(idEspec);
        }



        protected void cmbMedico_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void cmbMedico_TextChanged(object sender, EventArgs e)
        {

        }



        private void cargarGrilla()
        {
            if (txtFecha.Text != "")
            {

                DateTime desde = Convert.ToDateTime(txtFecha.Text);

                if (cmbMedico.SelectedIndex != -1)
                {
                    if (cmbEspecialidad.SelectedIndex != -1)
                    {
                        idLegajo = Convert.ToInt32(cmbMedico.SelectedValue.ToString());
                        idEspec = Convert.ToInt32(cmbEspecialidad.SelectedValue.ToString());

                        List<TurnoWeb> lista = AgendasTurnos.obtenerTurnosSemanaWeb(desde, idEspec, idLegajo);
                        if (lista != null)
                        {

                            grd.DataSource = lista;
                            grd.DataBind();
                                                  }
                        else
                        {
                            grd.DataSource = null;
                            grd.Visible = false;
                            btnRegistrar.Visible = false;
                            lblError.Visible = true;
                            lblError.Text = "No posee turnos disponibles";
                        }
                    }

                    else
                    {
                        lblError.Text = "Seleccione Medico y Especialidad. Vuelva a intentar la busqueda";

                    }
                }
                else
                {
                    lblError.Text = "Seleccione Medico y Especialidad. Vuelva a intentar la busqueda";
                }
            }
            else
            {
                lblError.Text = "Seleccione fecha de busqueda. Vuelva a intentar la busqueda";
             
            }
        }



        protected void grd_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ViewState["Tipo"] == null)
            {
                ViewState["Tipo"] = "Seleccionar";
            }
            grd.DataSource = null;
            cargarGrilla();
            GridViewRow row = grd.SelectedRow;
            string tipo = row.Cells[3].Text;
            if (ViewState["Tipo"].ToString() == "Seleccionar")
            {
                row.Cells[4].Text = "Asignado";
                row.Cells[4].BackColor = Color.LightGreen;
                ((LinkButton)row.Cells[3].Controls[0]).Text = "Cancelar";
                ViewState["Tipo"] = "Cancelar";
                btnRegistrar.Visible = true;
            }
            else if (ViewState["Tipo"].ToString() == "Cancelar")
            {
                row.Cells[4].Text = "Disponible";
                ((LinkButton)row.Cells[3].Controls[0]).Text = "Seleccionar";
                ViewState["Tipo"] = "Seleccionar";
                btnRegistrar.Visible = false;
            }


        }

        protected void grd_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Text = "Disponible";
            }
        }

        protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {


            }
            if (e.CommandName == "Cancel")
            {

            }

        }




        protected void btnRegistrarTurno(object sender, EventArgs e)
        {
            

        }

        protected void btnBuscarTurnos(object sender, EventArgs e)
        {
            //MUESTRA LA GRILLA AL PRESIONAR BUSCAR 
            if (txtFecha.Text != "")
            {
                DateTime desde = Convert.ToDateTime(txtFecha.Text);
                if (cmbMedico.SelectedIndex != -1)
                {
                    if (cmbEspecialidad.SelectedIndex != -1)
                    {
                        idLegajo = Convert.ToInt32(cmbMedico.SelectedValue.ToString());
                        idEspec = Convert.ToInt32(cmbEspecialidad.SelectedValue.ToString());

                        List<TurnoWeb> lista = AgendasTurnos.obtenerTurnosSemanaWeb(desde, idEspec, idLegajo);
                        if (lista != null)
                        {

                            grd.DataSource = lista;
                            grd.DataBind();
                            grd.Visible = true;

                        }
                        else
                        {
                            grd.DataSource = null;
                            grd.Visible = false;
                            btnRegistrar.Visible = false;
                            lblError.Visible = true;
                            lblError.Text = "No posee turnos disponibles";
                        }
                    }
                    else
                    {
                        lblError.Visible = true;
                        lblError.Text = "Seleccione Medico y Especialidad. Vuelva a intentar la busqueda";

                    }
                }
                else
                {
                    lblError.Visible = true;
                    lblError.Text = "Seleccione Medico y Especialidad. Vuelva a intentar la busqueda";
                }
            }
            else
            {
                lblError.Text = "Seleccione fecha de busqueda. Vuelva a intentar la busqueda";
             
            }
        }



        protected void txtFecha_TextChanged(object sender, EventArgs e)
        {

        }

      

     

        protected void btnAceptar_Click1(object sender, EventArgs e)
        {
            //Registra EL TURNO
            btnRegistrar.Visible = true;

            //OBTENEMOS LOS DATOS DEL PACIENTE LOGUEADO

            if (Session["idUserConectado"] != null)
            {
                Usuario oU = (Usuario)Session["idUserConectado"];


                ObtenerMisDatos(oU.nroAfiliado);
            }
            //OBTENEMOS DATOS DE LA GRILLA
            GridViewRow row = grd.SelectedRow;
            string valor = grd.SelectedDataKey.Value.ToString();
            idTurnoSeleccionado = long.Parse(valor);
            grd.Columns[5].Visible = false;
            idEstadoTurno = 2;
            bool res = AgendasTurnos.asignarTurnoPorId(nrohcPaciente, idPersona, idEstadoTurno, idTurnoSeleccionado);
            if (res == true)
            {
                lblExito.Visible = true;
                pnlRegistro.Visible = true;
                lblExito.Text = "Se registro con exito el turno";
                lblExito.Text += "\nPuede visualizar los turnos en la pestaña 'Mis Turnos'";
                btnRegistrar.Visible = false;
                cargarGrilla();
            }
        }

        protected void btnCancelar_Click1(object sender, EventArgs e)
        {
            btnRegistrar.Visible = false;
            lblExito.Visible = false;
            lblError.Visible = false;
        }


    }
}